﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI.WebControls;
using Entidades;
using System.Web.Security;

namespace WEB_IUS.Clases
{
    public class DBMenu
    {
        iusEntities ctx;
        public List<menu> FindPadres(string modulo)
        {
                var q = from c in ctx.menu
                        where c.PADREID==c.MENUID && c.MODULO.Equals(modulo)
                        select c;
                return q.ToList();
            
        }
        public void cargarMenu(Menu mn, String modulo) {
            using (ctx = new iusEntities())
            {
                mn.Items.Clear();
                //Entidades.menu menuEnt = menu();
                List<menu> itemPadres = FindPadres(modulo);

                foreach (menu item in itemPadres)
                {
                    if (item.MENUID == item.PADREID)
                    {
                        MenuItem mnuMenuItem = new MenuItem();
                        mnuMenuItem.Value = item.MENUID;
                        mnuMenuItem.Text = "   "+item.TITULO;
                        mnuMenuItem.ImageUrl = item.IMAGEN;
                        mnuMenuItem.NavigateUrl = item.URL;
                        //mnuMenuItem.ShowCheckBox = False
                        mnuMenuItem.ToolTip = item.DESCRIPCION;
                        mn.Items.Add(mnuMenuItem);
                       AddMenuItem(mnuMenuItem, item);
                    }
                }
            }

        }

        private void AddMenuItem(MenuItem mnuMenuItem, menu item)
        {
        foreach(menu itemHijo in item.menu1)
        {
            if (itemHijo.MENUID != itemHijo.PADREID)
            {
                //VALIDAR LOS ROLES
                // if (this.IsUserInRole(drMenuItem("ROLES").ToString) == true && drMenuItem("habilitado").ToString == "1")
                if (!String.IsNullOrEmpty(itemHijo.ROL))
                {
                    if (Roles.IsUserInRole(Usuario.getUsuarioActual().ToString(), itemHijo.ROL))
                    {
                        MenuItem mnuNewMenuItem = new MenuItem();
                        mnuNewMenuItem.Value = itemHijo.MENUID;
                        mnuNewMenuItem.Text = " " + itemHijo.TITULO;

                        mnuNewMenuItem.ToolTip = itemHijo.DESCRIPCION;
                        mnuNewMenuItem.ImageUrl = itemHijo.IMAGEN;
                        mnuNewMenuItem.NavigateUrl = itemHijo.URL;
                        //mnuNewMenuItem.Target = item.tar;
                        //mnuNewMenuItem.Selectable = False
                        mnuMenuItem.ChildItems.Add(mnuNewMenuItem);
                        //llamada recursiva para ver si el nuevo menú ítem aun tiene elementos hijos.
                        AddMenuItem(mnuNewMenuItem, itemHijo);
                    }
                }
            }
            
        }
        }

        public string CargarMenuA(string modulo)
        {
            string StrMenu;
            using (ctx = new iusEntities())
            {
                List<menu> itemPadres = FindPadres(modulo);
                StrMenu="<ul id=\"menu\">";
                foreach (menu item in itemPadres)
                {
                    if (item.MENUID == item.PADREID)
                    {
                        StrMenu += "<li><a href=\""+item.URL+"\" title=\""+item.DESCRIPCION+"\">"+item.TITULO+"</a>";
                        StrMenu += "<ul>";
                        StrMenu += AddMenuHijos(item);
                        StrMenu += "</ul>";
                        StrMenu += "</li>";
                    }
                }
            }
            StrMenu += "</ul>";
            return StrMenu;
        }

        private string AddMenuHijos(menu item)
        {
            string hmenu="";
            foreach (menu itemHijo in item.menu1)
            {
                if (itemHijo.MENUID != itemHijo.PADREID)
                {
                    //VALIDAR LOS ROLES
                    // if (this.IsUserInRole(drMenuItem("ROLES").ToString) == true && drMenuItem("habilitado").ToString == "1")
                    //hmenu += "<li><a href=\"" + ResolveClientUrl("~X/" + itemHijo.URL) + "\" title=\"" + itemHijo.DESCRIPCION + "\"  runat=\"server\">" + itemHijo.TITULO + "</a></li>";
                }

            }
            return hmenu;
        }
    
    }
}